package com.fh.controller.system.tools;

import com.fh.entity.system.User;
import com.fh.util.Const;
import com.fh.util.PageData;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;

import java.util.List;


/**
 * Created by caozengling on 2017/11/12.
 */
/*
空数据： 10000
未知错误 10001；
校验错误 10002；
权限错误 10003；
参数错误 10004；
 */
public class errorutils {

    /**
     * 返回成功的代码
     */
    public static String SUCCESS_CODE = "0";
    /**
     * 返回失败的代码
     */
    public static String ERROR_CODE = "1";//
    public static String ERROR_CODE0 = "10000";//空数据
    public static String ERROR_CODE1 = "10001";//参数错误
    public static String ERROR_CODE2 = "10002";//权限错误
    public static String ERROR_CODE3 = "10003";//校验错误
    public static String ERROR_CODE4 = "10004";//未知错误


    /**
     * 获取返回成功协议JSON
     *
     * @return 返回的json
     */
    public static String getSuccessResult(List<PageData> data) {
        return getResult(SUCCESS_CODE, "", data);
    }

    /**
     * 获取返回错误协议JSON
     *
     * @param message 错误时返回的消息
     * @return 返回的json
     */
    public static String getErrorResult(String message,List<PageData> data) {
        return getResult(ERROR_CODE, message, data);
    }

    /**
     * 获取返回协议JSON
     *
     * @param code 01 成功/ 00 失败
     * @param message 错误时返回的消息
     * @param body 返回内容
     * @return 返回的json
     */
    public static String getResult(String code, String message, List<PageData> data) {
        JSONObject returnJSON = new JSONObject();
        JSONObject resultJSON = new JSONObject();
        //判断参数
        if(data.size()>0){
            returnJSON.put("data", data);
            returnJSON.put("errcode", "00");
            returnJSON.put("errmsg", "获取成功");
        }else {
            resultJSON.put("errcode", "10000");
            resultJSON.put("errmsg", "返回空数据");
        }

        return returnJSON.toString();
    }
    public static PageData getResults(List<PageData> data,PageData pd) {
        Subject currentUser = SecurityUtils.getSubject();
        Session session = currentUser.getSession();
        User user = (User) session.getAttribute(Const.SESSION_USER);
        PageData resultPd = new PageData();
        //判断参数 逻辑错误参数待增加 暂时列几个
        if(data.size()>0){
            resultPd.put("data", data);
            resultPd.put("errcode", "0");
            resultPd.put("errmsg", "获取成功");
        }else {
            resultPd.put("data", "");
            resultPd.put("errcode", "0");
            resultPd.put("errmsg", "获取成功");
        }
        if(pd==null){
            resultPd.put("data", data);
            resultPd.put("errcode", "10001");
            resultPd.put("errmsg", "参数错误");
        }
        if(user==null){
            resultPd.put("errcode", "10002");
            resultPd.put("errmsg", "权限错误");
        }
        return resultPd;
    }
}
